package com.szwistar.iot;

import com.fasterxml.jackson.annotation.JsonProperty;

@CoModelDef(title = "测试设备模型", typeId = 123)
public class TestModel {
	 // 主机配置
	@CoAttrDef(title="IP主机名", rangeType="string", range="[3,20]", group="主机配置")
	@JsonProperty String hostname = "MFRC-E32";
	@CoAttrDef(title="蓝牙广播名称", rangeType="string", range="[3,20]", group="主机配置")
	@JsonProperty String bleName = hostname;
	@CoAttrDef(title="设备访问密码", rangeType="string", range="[1,6]", group="主机配置")
	@JsonProperty String password = "123456";
	@CoAttrDef(title="DNS1 地址", rangeType="ipv4", group="主机配置")
	@JsonProperty String dns1 = "223.5.5.5"; // 阿里的 DNS 服务器
	@CoAttrDef(title="DNS2 地址", rangeType="ipv4", group="主机配置")
	@JsonProperty String dns2 = "8.8.8.8";   // Google 的 DNS 服务器

    // 云端网关信息
	@CoAttrDef(title="云网关地址", rangeType="string", group="上行网关")
	@JsonProperty String serverAddress = "ehome.szwistar.com";
	@CoAttrDef(title="云网关端口号", rangeType="number", group="上行网关")
	@JsonProperty int serverPort = 8234;

    // WiFi 工作参数
	@CoAttrDef(title="WiFi 工作模式", rangeType="list", range="[{\"关闭\":0},{\"STA模式\":1},{\"AP模式\":2},{\"AP/STA双模\":3}]", group="WiFi参数")
	@JsonProperty int wifiMode = 1;

    // STA 模式工作参数
	@CoAttrDef(title="STA SSID", enableOn="me.wifiMode==1 || me.wifiMode==3", rangeType="string", range="[1,30]", group="WiFi参数")
	@JsonProperty String staSsid;
	@CoAttrDef(title="STA 密码", enableOn="me.wifiMode==1 || me.wifiMode==3", rangeType="string", range="[8,16]", group="WiFi参数")
	@JsonProperty String staPassword;
	@CoAttrDef(title="STA 使用固定 IP", enableOn="me.wifiMode==1 ||me.wifiMode==3", rangeType="boolean", group="WiFi参数")
	@JsonProperty boolean staUseFixedIp = false;

    // SoftAP 模式工作参数
	@CoAttrDef(title="AP SSID", enableOn="me.wifiMode==2 || me.wifiMode==3", rangeType="string", range="[8,30]", group="WiFi参数")
	@JsonProperty String softapSsid = hostname;
	@CoAttrDef(title="AP 密码", enableOn="me.wifiMode==2 || me.wifiMode==3", rangeType="string", range="[6,16]", group="WiFi参数")
	@JsonProperty String softapPassword = "123456";
	@CoAttrDef(title="AP 认证模式", enableOn="me.wifiMode==2 || me.wifiMode==3", rangeType="list", range="[{\"开放\":0},{\"WEP\":1},{\"WPA/PSK\":2},{\"WPA2/PSK\":3},{\"WPA/WPA2/PSK\":4},{\"WPA2/ENTERPRISE\":5},{\"WPA3/PSK\":6},{\"WPA2/WPA3/PSK\":7}]", group="WiFi参数")
	@JsonProperty int softapAuthmode = 4;
	@CoAttrDef(title="AP 最大连接数", enableOn="me.wifiMode==2 || me.wifiMode==3", rangeType="number", range="[1,4]", group="WiFi参数")
	@JsonProperty int softapMaxConnNum = 4;
	@CoAttrDef(title="AP 通道号", enableOn="me.wifiMode==2 || me.wifiMode==3", rangeType="number", range="[1,12]", group="WiFi参数")
	@JsonProperty int softapChannel = 10;
	@CoAttrDef(title="AP DHCP 服务", enableOn="me.wifiMode==2 || me.wifiMode==3", rangeType="boolean", group="WiFi参数")
	@JsonProperty boolean softapDhcpServerEnable = false;

    // 以太网工作参数
	@CoAttrDef(title="使用固定 IP", rangeType="boolean", group="以太网参数")
	@JsonProperty boolean ethUseFixedIp = false;

	// 串口配置
	@CoAttrDef(title="UART1 工作参数", rangeType="string", range="[10,15]", group="串口配置")
	@JsonProperty String uart1Config = "115200,8,n,1";
	@CoAttrDef(title="UART2 工作参数", rangeType="string", range="[10,15]", group="串口配置")
	@JsonProperty String uart2Config = "115200,8,n,1";
}
